In the realm of error messages, using compilation as an example, errors found by a compiler are typically reported without regard to other, possibly related, errors already detected. Consequently, the errors can be reported in an unstructured manner, making the task of fixing the errors very cumbersome. For example, suppose a class FOO defines a field f, and that FOO is not defined in the program. Typically, all uses of the field f are flagged as errors. These would not be errors only if FOO were defined. However, the user must filter through all these errors and others to determine that there are not many problems, but only one, namely the need for the class definition of FOO.
Generally, error reports from program development tools are typically a tangled web of unstructured information, from which the user must both filter and deduce the principal error origins, and address those in the application build. In many cases, errors are a result of others, and so are secondary errors to one or more primary errors. In some cases the connection is clear; in others not.
As an example from C++, when an included file cannot be found by the compiler, not only is that an error, but all uses of program artifacts defined in the missing include file are errors as well. While it is not clear which missing file accounts for each undefined artifact, most if not all of these errors are dependent on the array of missing includes.
Another example from C++ is in the use of out-of-scope variables. When one codes a “for loop” such asfor(int i=0; i< . . . ; . . . )the scope of variable i is totally within the body of the loop. So, uses of i outside the “for loop” but within the scopes that the “for loop” is within would be flagged as an error, independent of the error on the “for loop”. Seeing the latter error as dependent on the former would be of great use in focusing on the true cause of the error without being distracted by somewhat superfluous error messages.
In view of the foregoing, a need has been recognized in connection with making the error reporting aspect of programming development tools both more user friendly and more effective generally.